home *** CD-ROM | disk | FTP | other *** search
Text File | 2004-09-30 | 32.8 KB | 1,179 lines |
- ; Listing generated by Microsoft (R) Optimizing Compiler Version 13.10.4035
-
- TITLE .\d3darcball.cpp
- .386P
- include listing.inc
- if @Version gt 510
- .model FLAT
- else
- _TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
- _TEXT ENDS
- _DATA SEGMENT DWORD USE32 PUBLIC 'DATA'
- _DATA ENDS
- CONST SEGMENT DWORD USE32 PUBLIC 'CONST'
- CONST ENDS
- _BSS SEGMENT DWORD USE32 PUBLIC 'BSS'
- _BSS ENDS
- $$SYMBOLS SEGMENT BYTE USE32 'DEBSYM'
- $$SYMBOLS ENDS
- _TLS SEGMENT DWORD USE32 PUBLIC 'TLS'
- _TLS ENDS
- ; COMDAT ??0GXArcBall@@QAE@XZ
- _TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
- _TEXT ENDS
- ; COMDAT ??0GXArcBall@@QAE@ABH0@Z
- _TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
- _TEXT ENDS
- ; COMDAT ??0GXArcBall@@QAE@AAUD3DXVECTOR3@@@Z
- _TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
- _TEXT ENDS
- ; COMDAT ?Reset@GXArcBall@@QAEXXZ
- _TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
- _TEXT ENDS
- ; COMDAT ?SetWindow@GXArcBall@@QAEXHHM@Z
- _TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
- _TEXT ENDS
- ; COMDAT ?BeginDrag@GXArcBall@@QAEXABH0@Z
- _TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
- _TEXT ENDS
- ; COMDAT ?EndDrag@GXArcBall@@QAEXXZ
- _TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
- _TEXT ENDS
- ; COMDAT ?Mouse@GXArcBall@@QAEXABH0@Z
- _TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
- _TEXT ENDS
- ; COMDAT ?GetMat@GXArcBall@@QAEXPAUD3DXMATRIX@@@Z
- _TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
- _TEXT ENDS
- ; COMDAT ?ScreenToVector@GXArcBall@@IAE?AUD3DXVECTOR3@@ABH0@Z
- _TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
- _TEXT ENDS
- ; COMDAT ?Update@GXArcBall@@QAEXXZ
- _TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
- _TEXT ENDS
- ; COMDAT ?QuatFromBallPoints@@YA?AUD3DXQUATERNION@@ABUD3DXVECTOR3@@0@Z
- _TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
- _TEXT ENDS
- ; COMDAT ??0D3DXQUATERNION@@QAE@MMMM@Z
- _TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
- _TEXT ENDS
- ; COMDAT ?D3DXVec3Cross@@YAPAUD3DXVECTOR3@@PAU1@PBU1@1@Z
- _TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
- _TEXT ENDS
- ; COMDAT ?D3DXVec3Dot@@YAMPBUD3DXVECTOR3@@0@Z
- _TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
- _TEXT ENDS
- ; COMDAT ??DD3DXQUATERNION@@QBE?AU0@ABU0@@Z
- _TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
- _TEXT ENDS
- ; COMDAT _sqrtf
- _TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
- _TEXT ENDS
- ; COMDAT ?D3DXQuaternionConjugate@@YAPAUD3DXQUATERNION@@PAU1@PBU1@@Z
- _TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
- _TEXT ENDS
- ; COMDAT ?D3DXQuaternionIdentity@@YAPAUD3DXQUATERNION@@PAU1@@Z
- _TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
- _TEXT ENDS
- ; COMDAT ??0D3DXVECTOR3@@QAE@MMM@Z
- _TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
- _TEXT ENDS
- ; COMDAT ??0D3DXQUATERNION@@QAE@XZ
- _TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
- _TEXT ENDS
- ; COMDAT ??0D3DXVECTOR3@@QAE@XZ
- _TEXT SEGMENT PARA USE32 PUBLIC 'CODE'
- _TEXT ENDS
- FLAT GROUP _DATA, CONST, _BSS
- ASSUME CS: FLAT, DS: FLAT, SS: FLAT
- endif
-
- INCLUDELIB LIBC
- INCLUDELIB OLDNAMES
-
- PUBLIC ?EndDrag@GXArcBall@@QAEXXZ ; GXArcBall::EndDrag
- ; Function compile flags: /Ogs
- ; File d:\builds\nt32_fre\multimedia\directx\dxsdk\src\mview\gxu\d3darcball.cpp
- ; COMDAT ?EndDrag@GXArcBall@@QAEXXZ
- _TEXT SEGMENT
- ?EndDrag@GXArcBall@@QAEXXZ PROC NEAR ; GXArcBall::EndDrag, COMDAT
- ; _this$ = ecx
-
- ; 80 : }
-
- 00000 8b ff npad 2
- 00002 56 push esi
- 00003 57 push edi
-
- ; 78 : m_bDrag = false;
- ; 79 : m_qDown = m_qNow;
-
- 00004 8d 71 34 lea esi, DWORD PTR [ecx+52]
- 00007 8d 79 24 lea edi, DWORD PTR [ecx+36]
- 0000a a5 movsd
- 0000b a5 movsd
- 0000c a5 movsd
- 0000d a5 movsd
- 0000e 5f pop edi
- 0000f c6 41 50 00 mov BYTE PTR [ecx+80], 0
- 00013 5e pop esi
-
- ; 80 : }
-
- 00014 c3 ret 0
- ?EndDrag@GXArcBall@@QAEXXZ ENDP ; GXArcBall::EndDrag
- _TEXT ENDS
- PUBLIC _sqrtf
- EXTRN __fltused:NEAR
- ; Function compile flags: /Ogs
- ; File d:\builds\nt32_fre\public\sdk\inc\crt\math.h
- ; COMDAT _sqrtf
- _TEXT SEGMENT
- __X$ = 8 ; size = 4
- _sqrtf PROC NEAR ; COMDAT
-
- ; 458 : {return ((float)sqrt((double)_X)); }
-
- 00000 8b ff npad 2
- 00002 55 push ebp
- 00003 8b ec mov ebp, esp
- 00005 d9 45 08 fld DWORD PTR __X$[ebp]
- 00008 d9 fa fsqrt
- 0000a 5d pop ebp
- 0000b c3 ret 0
- _sqrtf ENDP
- _TEXT ENDS
- PUBLIC ??0D3DXVECTOR3@@QAE@XZ ; D3DXVECTOR3::D3DXVECTOR3
- ; Function compile flags: /Ogs
- ; File d:\builds\nt32_fre\public\sdk\inc\d3dx9math.h
- ; COMDAT ??0D3DXVECTOR3@@QAE@XZ
- _TEXT SEGMENT
- ??0D3DXVECTOR3@@QAE@XZ PROC NEAR ; D3DXVECTOR3::D3DXVECTOR3, COMDAT
- ; _this$ = ecx
-
- ; 165 : D3DXVECTOR3() {};
-
- 00000 8b c1 mov eax, ecx
- 00002 c3 ret 0
- ??0D3DXVECTOR3@@QAE@XZ ENDP ; D3DXVECTOR3::D3DXVECTOR3
- _TEXT ENDS
- PUBLIC ??0D3DXQUATERNION@@QAE@XZ ; D3DXQUATERNION::D3DXQUATERNION
- ; Function compile flags: /Ogs
- ; COMDAT ??0D3DXQUATERNION@@QAE@XZ
- _TEXT SEGMENT
- ??0D3DXQUATERNION@@QAE@XZ PROC NEAR ; D3DXQUATERNION::D3DXQUATERNION, COMDAT
- ; _this$ = ecx
-
- ; 429 : D3DXQUATERNION() {}
-
- 00000 8b c1 mov eax, ecx
- 00002 c3 ret 0
- ??0D3DXQUATERNION@@QAE@XZ ENDP ; D3DXQUATERNION::D3DXQUATERNION
- _TEXT ENDS
- PUBLIC ??0D3DXVECTOR3@@QAE@MMM@Z ; D3DXVECTOR3::D3DXVECTOR3
- ; Function compile flags: /Ogs
- ; File d:\builds\nt32_fre\public\sdk\inc\d3dx9math.inl
- ; COMDAT ??0D3DXVECTOR3@@QAE@MMM@Z
- _TEXT SEGMENT
- _fx$ = 8 ; size = 4
- _fy$ = 12 ; size = 4
- _fz$ = 16 ; size = 4
- ??0D3DXVECTOR3@@QAE@MMM@Z PROC NEAR ; D3DXVECTOR3::D3DXVECTOR3, COMDAT
- ; _this$ = ecx
-
- ; 308 : }
-
- 00000 8b ff npad 2
-
- ; 304 : {
-
- 00002 55 push ebp
- 00003 8b ec mov ebp, esp
- 00005 8b c1 mov eax, ecx
-
- ; 305 : x = fx;
-
- 00007 8b 4d 08 mov ecx, DWORD PTR _fx$[ebp]
- 0000a 89 08 mov DWORD PTR [eax], ecx
-
- ; 306 : y = fy;
-
- 0000c 8b 4d 0c mov ecx, DWORD PTR _fy$[ebp]
- 0000f 89 48 04 mov DWORD PTR [eax+4], ecx
-
- ; 307 : z = fz;
-
- 00012 8b 4d 10 mov ecx, DWORD PTR _fz$[ebp]
- 00015 89 48 08 mov DWORD PTR [eax+8], ecx
-
- ; 308 : }
-
- 00018 5d pop ebp
- 00019 c2 0c 00 ret 12 ; 0000000cH
- ??0D3DXVECTOR3@@QAE@MMM@Z ENDP ; D3DXVECTOR3::D3DXVECTOR3
- _TEXT ENDS
- PUBLIC ??0D3DXQUATERNION@@QAE@MMMM@Z ; D3DXQUATERNION::D3DXQUATERNION
- ; Function compile flags: /Ogs
- ; COMDAT ??0D3DXQUATERNION@@QAE@MMMM@Z
- _TEXT SEGMENT
- _fx$ = 8 ; size = 4
- _fy$ = 12 ; size = 4
- _fz$ = 16 ; size = 4
- _fw$ = 20 ; size = 4
- ??0D3DXQUATERNION@@QAE@MMMM@Z PROC NEAR ; D3DXQUATERNION::D3DXQUATERNION, COMDAT
- ; _this$ = ecx
-
- ; 1078 : }
-
- 00000 8b ff npad 2
-
- ; 1073 : {
-
- 00002 55 push ebp
- 00003 8b ec mov ebp, esp
- 00005 8b c1 mov eax, ecx
-
- ; 1074 : x = fx;
-
- 00007 8b 4d 08 mov ecx, DWORD PTR _fx$[ebp]
- 0000a 89 08 mov DWORD PTR [eax], ecx
-
- ; 1075 : y = fy;
-
- 0000c 8b 4d 0c mov ecx, DWORD PTR _fy$[ebp]
- 0000f 89 48 04 mov DWORD PTR [eax+4], ecx
-
- ; 1076 : z = fz;
-
- 00012 8b 4d 10 mov ecx, DWORD PTR _fz$[ebp]
- 00015 89 48 08 mov DWORD PTR [eax+8], ecx
-
- ; 1077 : w = fw;
-
- 00018 8b 4d 14 mov ecx, DWORD PTR _fw$[ebp]
- 0001b 89 48 0c mov DWORD PTR [eax+12], ecx
-
- ; 1078 : }
-
- 0001e 5d pop ebp
- 0001f c2 10 00 ret 16 ; 00000010H
- ??0D3DXQUATERNION@@QAE@MMMM@Z ENDP ; D3DXQUATERNION::D3DXQUATERNION
- _TEXT ENDS
- PUBLIC ??DD3DXQUATERNION@@QBE?AU0@ABU0@@Z ; D3DXQUATERNION::operator*
- EXTRN _D3DXQuaternionMultiply@12:NEAR
- ; Function compile flags: /Ogs
- ; COMDAT ??DD3DXQUATERNION@@QBE?AU0@ABU0@@Z
- _TEXT SEGMENT
- _qT$ = -16 ; size = 16
- ___$ReturnUdt$ = 8 ; size = 4
- _q$ = 12 ; size = 4
- ??DD3DXQUATERNION@@QBE?AU0@ABU0@@Z PROC NEAR ; D3DXQUATERNION::operator*, COMDAT
- ; _this$ = ecx
-
- ; 1178 : }
-
- 00000 8b ff npad 2
-
- ; 1174 : {
-
- 00002 55 push ebp
- 00003 8b ec mov ebp, esp
- 00005 83 ec 10 sub esp, 16 ; 00000010H
- 00008 56 push esi
- 00009 57 push edi
-
- ; 1175 : D3DXQUATERNION qT;
- ; 1176 : D3DXQuaternionMultiply(&qT, this, &q);
-
- 0000a ff 75 0c push DWORD PTR _q$[ebp]
- 0000d 8d 45 f0 lea eax, DWORD PTR _qT$[ebp]
- 00010 51 push ecx
- 00011 50 push eax
- 00012 e8 00 00 00 00 call _D3DXQuaternionMultiply@12
-
- ; 1177 : return qT;
-
- 00017 8b 45 08 mov eax, DWORD PTR ___$ReturnUdt$[ebp]
- 0001a 8d 75 f0 lea esi, DWORD PTR _qT$[ebp]
- 0001d 8b f8 mov edi, eax
- 0001f a5 movsd
- 00020 a5 movsd
- 00021 a5 movsd
- 00022 a5 movsd
- 00023 5f pop edi
- 00024 5e pop esi
-
- ; 1178 : }
-
- 00025 c9 leave
- 00026 c2 08 00 ret 8
- ??DD3DXQUATERNION@@QBE?AU0@ABU0@@Z ENDP ; D3DXQUATERNION::operator*
- _TEXT ENDS
- PUBLIC ?D3DXVec3Dot@@YAMPBUD3DXVECTOR3@@0@Z ; D3DXVec3Dot
- ; Function compile flags: /Ogs
- ; COMDAT ?D3DXVec3Dot@@YAMPBUD3DXVECTOR3@@0@Z
- _TEXT SEGMENT
- _pV1$ = 8 ; size = 4
- _pV2$ = 12 ; size = 4
- ?D3DXVec3Dot@@YAMPBUD3DXVECTOR3@@0@Z PROC NEAR ; D3DXVec3Dot, COMDAT
-
- ; 1736 : }
-
- 00000 8b ff npad 2
-
- ; 1729 : {
-
- 00002 55 push ebp
- 00003 8b ec mov ebp, esp
-
- ; 1730 : #ifdef D3DX_DEBUG
- ; 1731 : if(!pV1 || !pV2)
- ; 1732 : return 0.0f;
- ; 1733 : #endif
- ; 1734 :
- ; 1735 : return pV1->x * pV2->x + pV1->y * pV2->y + pV1->z * pV2->z;
-
- 00005 8b 45 08 mov eax, DWORD PTR _pV1$[ebp]
- 00008 8b 4d 0c mov ecx, DWORD PTR _pV2$[ebp]
- 0000b d9 40 08 fld DWORD PTR [eax+8]
- 0000e d8 49 08 fmul DWORD PTR [ecx+8]
- 00011 d9 40 04 fld DWORD PTR [eax+4]
- 00014 d8 49 04 fmul DWORD PTR [ecx+4]
- 00017 de c1 faddp ST(1), ST(0)
- 00019 d9 00 fld DWORD PTR [eax]
- 0001b d8 09 fmul DWORD PTR [ecx]
- 0001d de c1 faddp ST(1), ST(0)
-
- ; 1736 : }
-
- 0001f 5d pop ebp
- 00020 c3 ret 0
- ?D3DXVec3Dot@@YAMPBUD3DXVECTOR3@@0@Z ENDP ; D3DXVec3Dot
- _TEXT ENDS
- PUBLIC ?D3DXVec3Cross@@YAPAUD3DXVECTOR3@@PAU1@PBU1@1@Z ; D3DXVec3Cross
- ; Function compile flags: /Ogs
- ; COMDAT ?D3DXVec3Cross@@YAPAUD3DXVECTOR3@@PAU1@PBU1@1@Z
- _TEXT SEGMENT
- _v$ = -12 ; size = 12
- _pOut$ = 8 ; size = 4
- _pV1$ = 12 ; size = 4
- _pV2$ = 16 ; size = 4
- ?D3DXVec3Cross@@YAPAUD3DXVECTOR3@@PAU1@PBU1@1@Z PROC NEAR ; D3DXVec3Cross, COMDAT
-
- ; 1753 : return pOut;
- ; 1754 : }
-
- 00000 8b ff npad 2
-
- ; 1740 : {
-
- 00002 55 push ebp
- 00003 8b ec mov ebp, esp
- 00005 83 ec 0c sub esp, 12 ; 0000000cH
-
- ; 1741 : D3DXVECTOR3 v;
- ; 1742 :
- ; 1743 : #ifdef D3DX_DEBUG
- ; 1744 : if(!pOut || !pV1 || !pV2)
- ; 1745 : return NULL;
- ; 1746 : #endif
- ; 1747 :
- ; 1748 : v.x = pV1->y * pV2->z - pV1->z * pV2->y;
-
- 00008 8b 4d 10 mov ecx, DWORD PTR _pV2$[ebp]
- 0000b 8b 45 0c mov eax, DWORD PTR _pV1$[ebp]
- 0000e d9 41 08 fld DWORD PTR [ecx+8]
- 00011 d8 48 04 fmul DWORD PTR [eax+4]
- 00014 56 push esi
- 00015 d9 40 08 fld DWORD PTR [eax+8]
- 00018 57 push edi
- 00019 d8 49 04 fmul DWORD PTR [ecx+4]
-
- ; 1749 : v.y = pV1->z * pV2->x - pV1->x * pV2->z;
- ; 1750 : v.z = pV1->x * pV2->y - pV1->y * pV2->x;
- ; 1751 :
- ; 1752 : *pOut = v;
-
- 0001c 8d 75 f4 lea esi, DWORD PTR _v$[ebp]
- 0001f de e9 fsubp ST(1), ST(0)
- 00021 d9 5d f4 fstp DWORD PTR _v$[ebp]
- 00024 d9 40 08 fld DWORD PTR [eax+8]
- 00027 d8 09 fmul DWORD PTR [ecx]
- 00029 d9 41 08 fld DWORD PTR [ecx+8]
- 0002c d8 08 fmul DWORD PTR [eax]
- 0002e de e9 fsubp ST(1), ST(0)
- 00030 d9 5d f8 fstp DWORD PTR _v$[ebp+4]
- 00033 d9 00 fld DWORD PTR [eax]
- 00035 d8 49 04 fmul DWORD PTR [ecx+4]
- 00038 d9 01 fld DWORD PTR [ecx]
- 0003a d8 48 04 fmul DWORD PTR [eax+4]
- 0003d 8b 45 08 mov eax, DWORD PTR _pOut$[ebp]
- 00040 8b f8 mov edi, eax
- 00042 de e9 fsubp ST(1), ST(0)
- 00044 d9 5d fc fstp DWORD PTR _v$[ebp+8]
- 00047 a5 movsd
- 00048 a5 movsd
- 00049 a5 movsd
- 0004a 5f pop edi
- 0004b 5e pop esi
-
- ; 1753 : return pOut;
- ; 1754 : }
-
- 0004c c9 leave
- 0004d c3 ret 0
- ?D3DXVec3Cross@@YAPAUD3DXVECTOR3@@PAU1@PBU1@1@Z ENDP ; D3DXVec3Cross
- _TEXT ENDS
- PUBLIC ?D3DXQuaternionIdentity@@YAPAUD3DXQUATERNION@@PAU1@@Z ; D3DXQuaternionIdentity
- ; Function compile flags: /Ogs
- ; COMDAT ?D3DXQuaternionIdentity@@YAPAUD3DXQUATERNION@@PAU1@@Z
- _TEXT SEGMENT
- _pOut$ = 8 ; size = 4
- ?D3DXQuaternionIdentity@@YAPAUD3DXQUATERNION@@PAU1@@Z PROC NEAR ; D3DXQuaternionIdentity, COMDAT
-
- ; 2064 : return pOut;
- ; 2065 : }
-
- 00000 8b ff npad 2
-
- ; 2056 : {
-
- 00002 55 push ebp
- 00003 8b ec mov ebp, esp
-
- ; 2057 : #ifdef D3DX_DEBUG
- ; 2058 : if(!pOut)
- ; 2059 : return NULL;
- ; 2060 : #endif
- ; 2061 :
- ; 2062 : pOut->x = pOut->y = pOut->z = 0.0f;
-
- 00005 8b 45 08 mov eax, DWORD PTR _pOut$[ebp]
- 00008 d9 ee fldz
- 0000a d9 58 08 fstp DWORD PTR [eax+8]
- 0000d d9 ee fldz
- 0000f d9 58 04 fstp DWORD PTR [eax+4]
- 00012 d9 ee fldz
- 00014 d9 18 fstp DWORD PTR [eax]
-
- ; 2063 : pOut->w = 1.0f;
-
- 00016 d9 e8 fld1
- 00018 d9 58 0c fstp DWORD PTR [eax+12]
-
- ; 2064 : return pOut;
- ; 2065 : }
-
- 0001b 5d pop ebp
- 0001c c3 ret 0
- ?D3DXQuaternionIdentity@@YAPAUD3DXQUATERNION@@PAU1@@Z ENDP ; D3DXQuaternionIdentity
- _TEXT ENDS
- PUBLIC ?D3DXQuaternionConjugate@@YAPAUD3DXQUATERNION@@PAU1@PBU1@@Z ; D3DXQuaternionConjugate
- ; Function compile flags: /Ogs
- ; COMDAT ?D3DXQuaternionConjugate@@YAPAUD3DXQUATERNION@@PAU1@PBU1@@Z
- _TEXT SEGMENT
- _pOut$ = 8 ; size = 4
- _pQ$ = 12 ; size = 4
- ?D3DXQuaternionConjugate@@YAPAUD3DXQUATERNION@@PAU1@PBU1@@Z PROC NEAR ; D3DXQuaternionConjugate, COMDAT
-
- ; 2091 : return pOut;
- ; 2092 : }
-
- 00000 8b ff npad 2
-
- ; 2081 : {
-
- 00002 55 push ebp
- 00003 8b ec mov ebp, esp
-
- ; 2082 : #ifdef D3DX_DEBUG
- ; 2083 : if(!pOut || !pQ)
- ; 2084 : return NULL;
- ; 2085 : #endif
- ; 2086 :
- ; 2087 : pOut->x = -pQ->x;
-
- 00005 8b 4d 0c mov ecx, DWORD PTR _pQ$[ebp]
- 00008 d9 01 fld DWORD PTR [ecx]
- 0000a 8b 45 08 mov eax, DWORD PTR _pOut$[ebp]
- 0000d d9 e0 fchs
- 0000f d9 18 fstp DWORD PTR [eax]
-
- ; 2088 : pOut->y = -pQ->y;
-
- 00011 d9 41 04 fld DWORD PTR [ecx+4]
- 00014 d9 e0 fchs
- 00016 d9 58 04 fstp DWORD PTR [eax+4]
-
- ; 2089 : pOut->z = -pQ->z;
-
- 00019 d9 41 08 fld DWORD PTR [ecx+8]
- 0001c d9 e0 fchs
- 0001e d9 58 08 fstp DWORD PTR [eax+8]
-
- ; 2090 : pOut->w = pQ->w;
-
- 00021 8b 49 0c mov ecx, DWORD PTR [ecx+12]
- 00024 89 48 0c mov DWORD PTR [eax+12], ecx
-
- ; 2091 : return pOut;
- ; 2092 : }
-
- 00027 5d pop ebp
- 00028 c3 ret 0
- ?D3DXQuaternionConjugate@@YAPAUD3DXQUATERNION@@PAU1@PBU1@@Z ENDP ; D3DXQuaternionConjugate
- _TEXT ENDS
- PUBLIC ?Reset@GXArcBall@@QAEXXZ ; GXArcBall::Reset
- ; Function compile flags: /Ogs
- ; File d:\builds\nt32_fre\multimedia\directx\dxsdk\src\mview\gxu\d3darcball.cpp
- ; COMDAT ?Reset@GXArcBall@@QAEXXZ
- _TEXT SEGMENT
- ?Reset@GXArcBall@@QAEXXZ PROC NEAR ; GXArcBall::Reset, COMDAT
- ; _this$ = ecx
-
- ; 54 : D3DXQuaternionIdentity(&m_qDown);
-
- 00000 d9 ee fldz
- 00002 d9 59 2c fstp DWORD PTR [ecx+44]
- 00005 d9 ee fldz
- 00007 d9 59 28 fstp DWORD PTR [ecx+40]
- 0000a d9 ee fldz
- 0000c d9 59 24 fstp DWORD PTR [ecx+36]
- 0000f d9 e8 fld1
- 00011 d9 59 30 fstp DWORD PTR [ecx+48]
-
- ; 55 : D3DXQuaternionIdentity(&m_qNow);
-
- 00014 d9 ee fldz
- 00016 d9 59 3c fstp DWORD PTR [ecx+60]
- 00019 d9 ee fldz
- 0001b d9 59 38 fstp DWORD PTR [ecx+56]
- 0001e d9 ee fldz
- 00020 d9 59 34 fstp DWORD PTR [ecx+52]
- 00023 d9 e8 fld1
- 00025 d9 59 40 fstp DWORD PTR [ecx+64]
-
- ; 56 : m_bDrag = false;
-
- 00028 c6 41 50 00 mov BYTE PTR [ecx+80], 0
-
- ; 57 : }
-
- 0002c c3 ret 0
- ?Reset@GXArcBall@@QAEXXZ ENDP ; GXArcBall::Reset
- _TEXT ENDS
- PUBLIC __real@3f000000
- PUBLIC ?SetWindow@GXArcBall@@QAEXHHM@Z ; GXArcBall::SetWindow
- ; COMDAT __real@3f000000
- ; File d:\builds\nt32_fre\public\sdk\inc\d3dx9math.inl
- CONST SEGMENT
- __real@3f000000 DD 03f000000r ; 0.5
- ; Function compile flags: /Ogs
- ; File d:\builds\nt32_fre\multimedia\directx\dxsdk\src\mview\gxu\d3darcball.cpp
- CONST ENDS
- ; COMDAT ?SetWindow@GXArcBall@@QAEXHHM@Z
- _TEXT SEGMENT
- $T56388 = -12 ; size = 12
- _iWidth$ = 8 ; size = 4
- _iHeight$ = 12 ; size = 4
- _fRadius$ = 16 ; size = 4
- ?SetWindow@GXArcBall@@QAEXHHM@Z PROC NEAR ; GXArcBall::SetWindow, COMDAT
- ; _this$ = ecx
-
- ; 68 : }
-
- 00000 8b ff npad 2
-
- ; 60 : {
-
- 00002 55 push ebp
- 00003 8b ec mov ebp, esp
- 00005 83 ec 0c sub esp, 12 ; 0000000cH
-
- ; 61 : // set win info
- ; 62 : m_iWidth = iWidth;
- ; 63 : m_iHeight = iHeight;
- ; 64 : m_fRadius = fRadius;
- ; 65 :
- ; 66 : // set center after this
- ; 67 : m_vCenter = D3DXVECTOR3(iWidth/2.0f,iHeight/2.0f,0.0f);
-
- 00008 d9 05 00 00 00
- 00 fld DWORD PTR __real@3f000000
- 0000e 8b 45 08 mov eax, DWORD PTR _iWidth$[ebp]
- 00011 db 45 08 fild DWORD PTR _iWidth$[ebp]
- 00014 56 push esi
- 00015 57 push edi
- 00016 8d 75 f4 lea esi, DWORD PTR $T56388[ebp]
- 00019 d8 c9 fmul ST(0), ST(1)
- 0001b 8b f9 mov edi, ecx
- 0001d 89 41 44 mov DWORD PTR [ecx+68], eax
- 00020 8b 45 0c mov eax, DWORD PTR _iHeight$[ebp]
- 00023 d9 5d f4 fstp DWORD PTR $T56388[ebp]
- 00026 89 41 48 mov DWORD PTR [ecx+72], eax
- 00029 db 45 0c fild DWORD PTR _iHeight$[ebp]
- 0002c 8b 45 10 mov eax, DWORD PTR _fRadius$[ebp]
- 0002f 89 41 4c mov DWORD PTR [ecx+76], eax
- 00032 d8 c9 fmul ST(0), ST(1)
- 00034 d9 5d f8 fstp DWORD PTR $T56388[ebp+4]
- 00037 dd d8 fstp ST(0)
- 00039 d9 ee fldz
- 0003b d9 5d fc fstp DWORD PTR $T56388[ebp+8]
- 0003e a5 movsd
- 0003f a5 movsd
- 00040 a5 movsd
- 00041 5f pop edi
- 00042 5e pop esi
-
- ; 68 : }
-
- 00043 c9 leave
- 00044 c2 0c 00 ret 12 ; 0000000cH
- ?SetWindow@GXArcBall@@QAEXHHM@Z ENDP ; GXArcBall::SetWindow
- _TEXT ENDS
- PUBLIC ?GetMat@GXArcBall@@QAEXPAUD3DXMATRIX@@@Z ; GXArcBall::GetMat
- EXTRN _D3DXMatrixRotationQuaternion@8:NEAR
- ; Function compile flags: /Ogs
- ; COMDAT ?GetMat@GXArcBall@@QAEXPAUD3DXMATRIX@@@Z
- _TEXT SEGMENT
- _qConj$ = -16 ; size = 16
- _pmat$ = 8 ; size = 4
- ?GetMat@GXArcBall@@QAEXPAUD3DXMATRIX@@@Z PROC NEAR ; GXArcBall::GetMat, COMDAT
- ; _this$ = ecx
-
- ; 94 : }
-
- 00000 8b ff npad 2
-
- ; 91 : {
-
- 00002 55 push ebp
- 00003 8b ec mov ebp, esp
- 00005 83 ec 10 sub esp, 16 ; 00000010H
-
- ; 92 : D3DXQUATERNION qConj;
- ; 93 : D3DXMatrixRotationQuaternion(pmat, D3DXQuaternionConjugate(&qConj, &m_qNow));
-
- 00008 d9 41 34 fld DWORD PTR [ecx+52]
- 0000b 8b 41 40 mov eax, DWORD PTR [ecx+64]
- 0000e d9 e0 fchs
- 00010 89 45 fc mov DWORD PTR _qConj$[ebp+12], eax
- 00013 d9 5d f0 fstp DWORD PTR _qConj$[ebp]
- 00016 8d 45 f0 lea eax, DWORD PTR _qConj$[ebp]
- 00019 d9 41 38 fld DWORD PTR [ecx+56]
- 0001c 50 push eax
- 0001d ff 75 08 push DWORD PTR _pmat$[ebp]
- 00020 d9 e0 fchs
- 00022 d9 5d f4 fstp DWORD PTR _qConj$[ebp+4]
- 00025 d9 41 3c fld DWORD PTR [ecx+60]
- 00028 d9 e0 fchs
- 0002a d9 5d f8 fstp DWORD PTR _qConj$[ebp+8]
- 0002d e8 00 00 00 00 call _D3DXMatrixRotationQuaternion@8
-
- ; 94 : }
-
- 00032 c9 leave
- 00033 c2 04 00 ret 4
- ?GetMat@GXArcBall@@QAEXPAUD3DXMATRIX@@@Z ENDP ; GXArcBall::GetMat
- _TEXT ENDS
- PUBLIC __real@3ff0000000000000
- PUBLIC __real@3f800000
- PUBLIC __real@4f800000
- PUBLIC ?ScreenToVector@GXArcBall@@IAE?AUD3DXVECTOR3@@ABH0@Z ; GXArcBall::ScreenToVector
- ; COMDAT __real@4f800000
- ; File d:\builds\nt32_fre\public\sdk\inc\d3dx9math.inl
- CONST SEGMENT
- __real@4f800000 DD 04f800000r ; 4.29497e+009
- CONST ENDS
- ; COMDAT __real@3ff0000000000000
- CONST SEGMENT
- __real@3ff0000000000000 DQ 03ff0000000000000r ; 1
- CONST ENDS
- ; COMDAT __real@3f800000
- CONST SEGMENT
- __real@3f800000 DD 03f800000r ; 1
- ; Function compile flags: /Ogs
- ; File d:\builds\nt32_fre\multimedia\directx\dxsdk\src\mview\gxu\d3darcball.cpp
- CONST ENDS
- ; COMDAT ?ScreenToVector@GXArcBall@@IAE?AUD3DXVECTOR3@@ABH0@Z
- _TEXT SEGMENT
- tv269 = -4 ; size = 4
- tv211 = -4 ; size = 4
- ___$ReturnUdt$ = 8 ; size = 4
- _px$ = 12 ; size = 4
- _py$ = 16 ; size = 4
- ?ScreenToVector@GXArcBall@@IAE?AUD3DXVECTOR3@@ABH0@Z PROC NEAR ; GXArcBall::ScreenToVector, COMDAT
- ; _this$ = ecx
-
- ; 124 : }
-
- 00000 8b ff npad 2
-
- ; 97 : {
-
- 00002 55 push ebp
- 00003 8b ec mov ebp, esp
- 00005 51 push ecx
-
- ; 98 : float x,y,z;
- ; 99 :
- ; 100 : DWORD dwScreenDiameter = min(m_iWidth, m_iHeight);
-
- 00006 8b 41 44 mov eax, DWORD PTR [ecx+68]
- 00009 8b 51 48 mov edx, DWORD PTR [ecx+72]
- 0000c 3b c2 cmp eax, edx
- 0000e 7c 02 jl SHORT $L56404
- 00010 8b c2 mov eax, edx
- $L56404:
-
- ; 121 : }
- ; 122 :
- ; 123 : return D3DXVECTOR3(x,y,z);
-
- 00012 85 c0 test eax, eax
- 00014 89 45 fc mov DWORD PTR tv269[ebp], eax
- 00017 db 45 fc fild DWORD PTR tv269[ebp]
- 0001a 7d 06 jge SHORT $L56418
- 0001c d8 05 00 00 00
- 00 fadd DWORD PTR __real@4f800000
- $L56418:
- 00022 d8 49 4c fmul DWORD PTR [ecx+76]
- 00025 8b 45 0c mov eax, DWORD PTR _px$[ebp]
- 00028 d8 0d 00 00 00
- 00 fmul DWORD PTR __real@3f000000
- 0002e d9 5d fc fstp DWORD PTR tv211[ebp]
- 00031 db 00 fild DWORD PTR [eax]
- 00033 8b 45 10 mov eax, DWORD PTR _py$[ebp]
- 00036 d8 21 fsub DWORD PTR [ecx]
- 00038 d8 75 fc fdiv DWORD PTR tv211[ebp]
- 0003b d9 e0 fchs
- 0003d db 00 fild DWORD PTR [eax]
- 0003f d8 69 04 fsubr DWORD PTR [ecx+4]
- 00042 d8 75 fc fdiv DWORD PTR tv211[ebp]
- 00045 d9 e0 fchs
- 00047 d9 c0 fld ST(0)
- 00049 d8 c9 fmul ST(0), ST(1)
- 0004b d9 c2 fld ST(2)
- 0004d d8 cb fmul ST(0), ST(3)
- 0004f de c1 faddp ST(1), ST(0)
- 00051 dc 15 00 00 00
- 00 fcom QWORD PTR __real@3ff0000000000000
- 00057 df e0 fnstsw ax
- 00059 f6 c4 41 test ah, 65 ; 00000041H
- 0005c 75 12 jne SHORT $L56309
- 0005e d9 fa fsqrt
- 00060 d8 3d 00 00 00
- 00 fdivr DWORD PTR __real@3f800000
- 00066 d9 c0 fld ST(0)
- 00068 de cb fmulp ST(3), ST(0)
- 0006a de c9 fmulp ST(1), ST(0)
- 0006c d9 ee fldz
- 0006e eb 08 jmp SHORT $L56311
- $L56309:
-
- ; 101 :
- ; 102 : x = (px - m_vCenter.x) / (dwScreenDiameter * m_fRadius * 0.5f); // scales to screen...
- ; 103 : #if 1
- ; 104 : y = (m_vCenter.y - py) / (dwScreenDiameter * m_fRadius * 0.5f); // invert Y coordinate...
- ; 105 : #else
- ; 106 : y = (py - m_vCenter.y) / (dwScreenDiameter * m_fRadius * 0.5f); // invert Y coordinate...
- ; 107 : #endif
- ; 108 :
- ; 109 : x = -x;
- ; 110 : y = -y;
- ; 111 :
- ; 112 : float mag = x*x + y*y;
- ; 113 :
- ; 114 : if (mag > 1.0) {
- ; 115 : float scale = 1.0f/sqrtf(mag);
- ; 116 : x *= scale;
- ; 117 : y *= scale;
- ; 118 : z = 0.0;
- ; 119 : } else {
- ; 120 : z = sqrtf((1.0f-mag));
-
- 00070 d9 e8 fld1
- 00072 d8 e1 fsub ST(0), ST(1)
- 00074 d9 fa fsqrt
- 00076 dd d9 fstp ST(1)
- $L56311:
-
- ; 121 : }
- ; 122 :
- ; 123 : return D3DXVECTOR3(x,y,z);
-
- 00078 8b 45 08 mov eax, DWORD PTR ___$ReturnUdt$[ebp]
- 0007b d9 c2 fld ST(2)
- 0007d d9 18 fstp DWORD PTR [eax]
- 0007f d9 c1 fld ST(1)
- 00081 d9 58 04 fstp DWORD PTR [eax+4]
- 00084 d9 58 08 fstp DWORD PTR [eax+8]
- 00087 dd d8 fstp ST(0)
- 00089 dd d8 fstp ST(0)
-
- ; 124 : }
-
- 0008b c9 leave
- 0008c c2 0c 00 ret 12 ; 0000000cH
- ?ScreenToVector@GXArcBall@@IAE?AUD3DXVECTOR3@@ABH0@Z ENDP ; GXArcBall::ScreenToVector
- _TEXT ENDS
- PUBLIC ?QuatFromBallPoints@@YA?AUD3DXQUATERNION@@ABUD3DXVECTOR3@@0@Z ; QuatFromBallPoints
- ; Function compile flags: /Ogs
- ; COMDAT ?QuatFromBallPoints@@YA?AUD3DXQUATERNION@@ABUD3DXVECTOR3@@0@Z
- _TEXT SEGMENT
- _vPart$ = -24 ; size = 12
- _v$56436 = -12 ; size = 12
- ___$ReturnUdt$ = 8 ; size = 4
- _vFrom$ = 12 ; size = 4
- _vTo$ = 16 ; size = 4
- ?QuatFromBallPoints@@YA?AUD3DXQUATERNION@@ABUD3DXVECTOR3@@0@Z PROC NEAR ; QuatFromBallPoints, COMDAT
-
- ; 145 : }
-
- 00000 8b ff npad 2
-
- ; 138 : {
-
- 00002 55 push ebp
- 00003 8b ec mov ebp, esp
- 00005 83 ec 18 sub esp, 24 ; 00000018H
-
- ; 139 : D3DXVECTOR3 vPart;
- ; 140 : float dotPart = D3DXVec3Dot(&vFrom, &vTo);
-
- 00008 8b 45 0c mov eax, DWORD PTR _vFrom$[ebp]
- 0000b 8b 4d 10 mov ecx, DWORD PTR _vTo$[ebp]
- 0000e d9 40 04 fld DWORD PTR [eax+4]
- 00011 d8 49 04 fmul DWORD PTR [ecx+4]
- 00014 56 push esi
- 00015 d9 00 fld DWORD PTR [eax]
- 00017 57 push edi
- 00018 d8 09 fmul DWORD PTR [ecx]
-
- ; 141 :
- ; 142 : D3DXVec3Cross(&vPart, &vFrom, &vTo);
-
- 0001a 8d 75 f4 lea esi, DWORD PTR _v$56436[ebp]
- 0001d 8d 7d e8 lea edi, DWORD PTR _vPart$[ebp]
- 00020 de c1 faddp ST(1), ST(0)
- 00022 d9 41 08 fld DWORD PTR [ecx+8]
- 00025 d8 48 08 fmul DWORD PTR [eax+8]
- 00028 de c1 faddp ST(1), ST(0)
- 0002a d9 40 04 fld DWORD PTR [eax+4]
- 0002d d8 49 08 fmul DWORD PTR [ecx+8]
- 00030 d9 40 08 fld DWORD PTR [eax+8]
- 00033 d8 49 04 fmul DWORD PTR [ecx+4]
- 00036 de e9 fsubp ST(1), ST(0)
- 00038 d9 5d f4 fstp DWORD PTR _v$56436[ebp]
- 0003b d9 01 fld DWORD PTR [ecx]
- 0003d d8 48 08 fmul DWORD PTR [eax+8]
- 00040 d9 41 08 fld DWORD PTR [ecx+8]
- 00043 d8 08 fmul DWORD PTR [eax]
- 00045 de e9 fsubp ST(1), ST(0)
- 00047 d9 5d f8 fstp DWORD PTR _v$56436[ebp+4]
- 0004a d9 00 fld DWORD PTR [eax]
- 0004c d8 49 04 fmul DWORD PTR [ecx+4]
- 0004f d9 40 04 fld DWORD PTR [eax+4]
-
- ; 143 :
- ; 144 : return D3DXQUATERNION(vPart.x, vPart.y, vPart.z, dotPart);
-
- 00052 8b 45 08 mov eax, DWORD PTR ___$ReturnUdt$[ebp]
- 00055 d8 09 fmul DWORD PTR [ecx]
- 00057 de e9 fsubp ST(1), ST(0)
- 00059 d9 5d fc fstp DWORD PTR _v$56436[ebp+8]
- 0005c a5 movsd
- 0005d a5 movsd
- 0005e a5 movsd
- 0005f d9 45 e8 fld DWORD PTR _vPart$[ebp]
- 00062 d9 18 fstp DWORD PTR [eax]
- 00064 8b 4d ec mov ecx, DWORD PTR _vPart$[ebp+4]
- 00067 89 48 04 mov DWORD PTR [eax+4], ecx
- 0006a d9 58 0c fstp DWORD PTR [eax+12]
- 0006d 8b 4d f0 mov ecx, DWORD PTR _vPart$[ebp+8]
- 00070 5f pop edi
- 00071 89 48 08 mov DWORD PTR [eax+8], ecx
- 00074 5e pop esi
-
- ; 145 : }
-
- 00075 c9 leave
- 00076 c3 ret 0
- ?QuatFromBallPoints@@YA?AUD3DXQUATERNION@@ABUD3DXVECTOR3@@0@Z ENDP ; QuatFromBallPoints
- _TEXT ENDS
- PUBLIC ??0GXArcBall@@QAE@XZ ; GXArcBall::GXArcBall
- ; Function compile flags: /Ogs
- ; COMDAT ??0GXArcBall@@QAE@XZ
- _TEXT SEGMENT
- ??0GXArcBall@@QAE@XZ PROC NEAR ; GXArcBall::GXArcBall, COMDAT
- ; _this$ = ecx
-
- ; 37 : Reset();
-
- 00000 e8 00 00 00 00 call ?Reset@GXArcBall@@QAEXXZ ; GXArcBall::Reset
-
- ; 38 : }
-
- 00005 8b c1 mov eax, ecx
- 00007 c3 ret 0
- ??0GXArcBall@@QAE@XZ ENDP ; GXArcBall::GXArcBall
- _TEXT ENDS
- PUBLIC ??0GXArcBall@@QAE@ABH0@Z ; GXArcBall::GXArcBall
- ; Function compile flags: /Ogs
- ; COMDAT ??0GXArcBall@@QAE@ABH0@Z
- _TEXT SEGMENT
- $T56461 = -12 ; size = 12
- _x$ = 8 ; size = 4
- _y$ = 12 ; size = 4
- ??0GXArcBall@@QAE@ABH0@Z PROC NEAR ; GXArcBall::GXArcBall, COMDAT
- ; _this$ = ecx
-
- ; 44 : }
-
- 00000 8b ff npad 2
-
- ; 41 : {
-
- 00002 55 push ebp
- 00003 8b ec mov ebp, esp
- 00005 83 ec 0c sub esp, 12 ; 0000000cH
-
- ; 42 : m_vCenter = D3DXVECTOR3((float)x,(float)y,0.0f);
-
- 00008 8b 45 08 mov eax, DWORD PTR _x$[ebp]
- 0000b db 00 fild DWORD PTR [eax]
- 0000d 8b 45 0c mov eax, DWORD PTR _y$[ebp]
- 00010 56 push esi
- 00011 57 push edi
- 00012 d9 5d f4 fstp DWORD PTR $T56461[ebp]
- 00015 8d 75 f4 lea esi, DWORD PTR $T56461[ebp]
- 00018 db 00 fild DWORD PTR [eax]
- 0001a 8b f9 mov edi, ecx
- 0001c d9 5d f8 fstp DWORD PTR $T56461[ebp+4]
- 0001f d9 ee fldz
- 00021 d9 5d fc fstp DWORD PTR $T56461[ebp+8]
- 00024 a5 movsd
- 00025 a5 movsd
- 00026 a5 movsd
-
- ; 43 : Reset();
-
- 00027 e8 00 00 00 00 call ?Reset@GXArcBall@@QAEXXZ ; GXArcBall::Reset
- 0002c 5f pop edi
-
- ; 44 : }
-
- 0002d 8b c1 mov eax, ecx
- 0002f 5e pop esi
- 00030 c9 leave
- 00031 c2 08 00 ret 8
- ??0GXArcBall@@QAE@ABH0@Z ENDP ; GXArcBall::GXArcBall
- _TEXT ENDS
- PUBLIC ??0GXArcBall@@QAE@AAUD3DXVECTOR3@@@Z ; GXArcBall::GXArcBall
- ; Function compile flags: /Ogs
- ; COMDAT ??0GXArcBall@@QAE@AAUD3DXVECTOR3@@@Z
- _TEXT SEGMENT
- _center$ = 8 ; size = 4
- ??0GXArcBall@@QAE@AAUD3DXVECTOR3@@@Z PROC NEAR ; GXArcBall::GXArcBall, COMDAT
- ; _this$ = ecx
-
- ; 50 : }
-
- 00000 8b ff npad 2
-
- ; 47 : {
-
- 00002 55 push ebp
- 00003 8b ec mov ebp, esp
- 00005 56 push esi
-
- ; 48 : m_vCenter = center;
-
- 00006 8b 75 08 mov esi, DWORD PTR _center$[ebp]
- 00009 57 push edi
- 0000a 8b f9 mov edi, ecx
- 0000c a5 movsd
- 0000d a5 movsd
- 0000e a5 movsd
-
- ; 49 : Reset();
-
- 0000f e8 00 00 00 00 call ?Reset@GXArcBall@@QAEXXZ ; GXArcBall::Reset
- 00014 5f pop edi
-
- ; 50 : }
-
- 00015 8b c1 mov eax, ecx
- 00017 5e pop esi
- 00018 5d pop ebp
- 00019 c2 04 00 ret 4
- ??0GXArcBall@@QAE@AAUD3DXVECTOR3@@@Z ENDP ; GXArcBall::GXArcBall
- _TEXT ENDS
- PUBLIC ?BeginDrag@GXArcBall@@QAEXABH0@Z ; GXArcBall::BeginDrag
- ; Function compile flags: /Ogs
- ; COMDAT ?BeginDrag@GXArcBall@@QAEXABH0@Z
- _TEXT SEGMENT
- $T56499 = -12 ; size = 12
- _x$ = 8 ; size = 4
- _y$ = 12 ; size = 4
- ?BeginDrag@GXArcBall@@QAEXABH0@Z PROC NEAR ; GXArcBall::BeginDrag, COMDAT
- ; _this$ = ecx
-
- ; 74 : }
-
- 00000 8b ff npad 2
-
- ; 71 : {
-
- 00002 55 push ebp
- 00003 8b ec mov ebp, esp
- 00005 83 ec 0c sub esp, 12 ; 0000000cH
- 00008 56 push esi
- 00009 57 push edi
-
- ; 72 : m_bDrag = true;
- ; 73 : m_vDown = ScreenToVector(x,y);
-
- 0000a ff 75 0c push DWORD PTR _y$[ebp]
- 0000d 8d 45 f4 lea eax, DWORD PTR $T56499[ebp]
- 00010 ff 75 08 push DWORD PTR _x$[ebp]
- 00013 c6 41 50 01 mov BYTE PTR [ecx+80], 1
- 00017 50 push eax
- 00018 e8 00 00 00 00 call ?ScreenToVector@GXArcBall@@IAE?AUD3DXVECTOR3@@ABH0@Z ; GXArcBall::ScreenToVector
- 0001d 8d 79 0c lea edi, DWORD PTR [ecx+12]
- 00020 8b f0 mov esi, eax
- 00022 a5 movsd
- 00023 a5 movsd
- 00024 a5 movsd
- 00025 5f pop edi
- 00026 5e pop esi
-
- ; 74 : }
-
- 00027 c9 leave
- 00028 c2 08 00 ret 8
- ?BeginDrag@GXArcBall@@QAEXABH0@Z ENDP ; GXArcBall::BeginDrag
- _TEXT ENDS
- PUBLIC ?Update@GXArcBall@@QAEXXZ ; GXArcBall::Update
- ; Function compile flags: /Ogs
- ; COMDAT ?Update@GXArcBall@@QAEXXZ
- _TEXT SEGMENT
- $T56501 = -32 ; size = 16
- _qT$56511 = -16 ; size = 16
- ?Update@GXArcBall@@QAEXXZ PROC NEAR ; GXArcBall::Update, COMDAT
- ; _this$ = ecx
-
- ; 133 : #endif
- ; 134 : }
- ; 135 : }
-
- 00000 8b ff npad 2
-
- ; 127 : {
-
- 00002 55 push ebp
- 00003 8b ec mov ebp, esp
- 00005 83 ec 20 sub esp, 32 ; 00000020H
- 00008 56 push esi
- 00009 8b f1 mov esi, ecx
-
- ; 128 : if (m_bDrag) { // recompute m_qNow
-
- 0000b 80 7e 50 00 cmp BYTE PTR [esi+80], 0
- 0000f 74 2e je SHORT $L56316
- 00011 57 push edi
-
- ; 129 : #if 0
- ; 130 : m_qNow = QuatFromBallPoints(m_vDown, m_vCur) * m_qDown;
- ; 131 : #else
- ; 132 : m_qNow = m_qDown * QuatFromBallPoints(m_vDown, m_vCur);
-
- 00012 8d 46 18 lea eax, DWORD PTR [esi+24]
- 00015 50 push eax
- 00016 8d 46 0c lea eax, DWORD PTR [esi+12]
- 00019 50 push eax
- 0001a 8d 45 e0 lea eax, DWORD PTR $T56501[ebp]
- 0001d 50 push eax
- 0001e e8 00 00 00 00 call ?QuatFromBallPoints@@YA?AUD3DXQUATERNION@@ABUD3DXVECTOR3@@0@Z ; QuatFromBallPoints
- 00023 83 c4 0c add esp, 12 ; 0000000cH
- 00026 50 push eax
- 00027 8d 46 24 lea eax, DWORD PTR [esi+36]
- 0002a 50 push eax
- 0002b 8d 45 f0 lea eax, DWORD PTR _qT$56511[ebp]
- 0002e 50 push eax
- 0002f e8 00 00 00 00 call _D3DXQuaternionMultiply@12
- 00034 8d 7e 34 lea edi, DWORD PTR [esi+52]
- 00037 8d 75 f0 lea esi, DWORD PTR _qT$56511[ebp]
- 0003a a5 movsd
- 0003b a5 movsd
- 0003c a5 movsd
- 0003d a5 movsd
- 0003e 5f pop edi
- $L56316:
- 0003f 5e pop esi
-
- ; 133 : #endif
- ; 134 : }
- ; 135 : }
-
- 00040 c9 leave
- 00041 c3 ret 0
- ?Update@GXArcBall@@QAEXXZ ENDP ; GXArcBall::Update
- _TEXT ENDS
- PUBLIC ?Mouse@GXArcBall@@QAEXABH0@Z ; GXArcBall::Mouse
- ; Function compile flags: /Ogs
- ; COMDAT ?Mouse@GXArcBall@@QAEXABH0@Z
- _TEXT SEGMENT
- $T56514 = -12 ; size = 12
- _x$ = 8 ; size = 4
- _y$ = 12 ; size = 4
- ?Mouse@GXArcBall@@QAEXABH0@Z PROC NEAR ; GXArcBall::Mouse, COMDAT
- ; _this$ = ecx
-
- ; 87 : }
- ; 88 : }
-
- 00000 8b ff npad 2
-
- ; 83 : {
-
- 00002 55 push ebp
- 00003 8b ec mov ebp, esp
- 00005 83 ec 0c sub esp, 12 ; 0000000cH
-
- ; 84 : if (m_bDrag) { // ignore it if you aren't dragging
-
- 00008 80 79 50 00 cmp BYTE PTR [ecx+80], 0
- 0000c 74 20 je SHORT $L56291
- 0000e 56 push esi
- 0000f 57 push edi
-
- ; 85 : m_vCur = ScreenToVector(x,y);
-
- 00010 ff 75 0c push DWORD PTR _y$[ebp]
- 00013 8d 45 f4 lea eax, DWORD PTR $T56514[ebp]
- 00016 ff 75 08 push DWORD PTR _x$[ebp]
- 00019 50 push eax
- 0001a e8 00 00 00 00 call ?ScreenToVector@GXArcBall@@IAE?AUD3DXVECTOR3@@ABH0@Z ; GXArcBall::ScreenToVector
- 0001f 8d 79 18 lea edi, DWORD PTR [ecx+24]
- 00022 8b f0 mov esi, eax
- 00024 a5 movsd
- 00025 a5 movsd
- 00026 a5 movsd
-
- ; 86 : Update(); // always build qNow_...
-
- 00027 e8 00 00 00 00 call ?Update@GXArcBall@@QAEXXZ ; GXArcBall::Update
- 0002c 5f pop edi
- 0002d 5e pop esi
- $L56291:
-
- ; 87 : }
- ; 88 : }
-
- 0002e c9 leave
- 0002f c2 08 00 ret 8
- ?Mouse@GXArcBall@@QAEXABH0@Z ENDP ; GXArcBall::Mouse
- _TEXT ENDS
- END
-